<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // push pop unshift shift  reverse sort splice
        // ================上面的方法影响了原数组==========
        // ================下面的方法原数组不改变==========
        // 把结果放到一个新的数组中 
        /* 
            8.concat()
            作用:拼接数组 可以拼接数组 也可以把数据拼接到数组中  
            语法: 数组.concat(数组1,数组2,数据1,数据2)
            返回值:拼接好的数组
            push的区别 :
                1. push 改变原数组  concat 不改变
                2. 直接把数据插入到数组的结尾
                    concat 遇到数组 把数组拆开 然后把元素依次插入到目标的结尾
        
        
            9.slice()
            作用:截取数据的部分内容 
            语法:数组.slice(开始的索引,结束的索引);
            返回值: 返回一个新的数组
            // 不管参数是正整数还是负整数 截取的方向永远是从左到右
            // 如果你写的方向是从右往左 那么就会截取不到结果
            // [开始的索引,结束的索引) 包含开始的索引 不包含结束的索引
            // 开始的索引不填 默认是0  结束的索引不填 默认length 
            // 可以填写负整数   表示倒数第几个 等于length+负整数 
            //   var arrs = ['阿珂','双儿','建宁公主','苏荃','沐剑屏','曾柔','方怡'];
            ///                 0      1        2       3       4       5      6
            //                 -7      -6       -5      -4      -3     -2     -1
            跟splice()的区别
            1. 是否改变原数组
                splice改变
                slice 不改变
            2.  语法
                splice(开始的索引,多少个)
                slice(开始的索引,结束的索引)


        10. join()
            作用:使用连接符 将数组的每个元素连接起来 连成一个字符串  
            如果不写连接符 默认用,连接 
            语法: 数组.join(连接符)
            返回值: 连接后字符串

        // 不管从左还是从右 从开始还是从中间找 所在的索引永不变
        11 indexOf
            从左往后
            数组.indexOf(数据);  //默认从头开始查
            数组.indexOf(数据,开始的索引)// 可以从指定的位置开始查
            返回值:
                如果找到这个数据 返回这个数据第一次出现的位置 所在的索引
                如果没找到  返回-1
        12 lastIndexOf
            从右往左
            数组.lastIndexOf(数据);  //默认从头开始查
            数组.lastIndexOf(数据,开始的索引)// 可以从指定的位置开始查
            返回值:
                如果找到这个数据 返回这个数据第一次出现的位置 所在的索引
                如果没找到  返回-1

        开始的索引支持写负数  等同于 数组.length+ 负数
        
        */

        // var arrs = ['阿珂','双儿','建宁公主','苏荃','沐剑屏','曾柔','方怡'];
        // console.log('原数组',arrs);
        // var newarr = ['苍老师','龙老师','波老师'];
        // var res = arrs.concat(newarr);
        
        // console.log('拼接后的数组',arrs);
        // console.log('拼接后的结果',res)


        // var arrs = ['阿珂','双儿','建宁公主','苏荃','沐剑屏','曾柔','方怡'];
        // console.log('原数组',arrs);
        // var newarr = ['苍老师','龙老师','波老师'];
        // var newarr1 = ['小泽老师','杜老师','张老师'];
        // var newarr2 = ['赵老师','泥老师','田老师'];


        // var res = arrs.concat(newarr,newarr1,newarr2,'古力娜扎','热依扎','迪丽热巴');
        
        // console.log('拼接后的数组',arrs);
        // console.log('拼接后的结果',res)


        // var arrs = ['阿珂','双儿','建宁公主','苏荃','沐剑屏','曾柔','方怡'];
        // console.log('原始数组',arrs);
        // var res = arrs.slice(3,5); // [3,5)   3 4 
        // console.log('截取的结果',res);
        // console.log('截取后的原数组',arrs);

        // var arrs = ['阿珂','双儿','建宁公主','苏荃','沐剑屏','曾柔','方怡'];
        // console.log('原始数组',arrs);
        // var res = arrs.slice(3); // [3,arrs.length)  [3,7)  3456 只写开头 不写结尾
        // console.log('截取的结果',res);
        // console.log('截取后的原数组',arrs);


        // var arrs = ['阿珂','双儿','建宁公主','苏荃','沐剑屏','曾柔','方怡'];
        // console.log('原始数组',arrs);
        // var res = arrs.slice(,6); //不支持只写结尾  这里报错 
        // console.log('截取的结果',res);
        // console.log('截取后的原数组',arrs);

        // 
        // var arrs = ['阿珂','双儿','建宁公主','苏荃','沐剑屏','曾柔','方怡'];
        // console.log('原始数组',arrs);
        // // var res = arrs.slice(-3,-5); //-3 到 -5 从右往左 但是截取始终是从左到右
        // // // 冲突 所以什么也没截取到
        // var res = arrs.slice(-5,-3);
        // console.log('截取的结果',res);
        // console.log('截取后的原数组',arrs);


        // var arrs = ['阿珂','双儿','建宁公主','苏荃','沐剑屏','曾柔','方怡'];
        // console.log('原始数组',arrs);
        // var res = arrs.slice(0); // [0,arrs.length)  [0,7)
        // console.log('截取的结果',res);
        // console.log('截取后的原数组',arrs);

        // 复制数组 的方式  
        // 1.准备一个空数组 遍历原数组 每次循环将原数组的元素插入到新数组的结尾
        // 2.数组.slice(0);
        // 3.[].concat(原数组)

        // var arrs = ['阿珂','双儿','建宁公主','苏荃','沐剑屏','曾柔','方怡'];
        // console.log('原始数组',arrs);
        // var res = arrs.join();
        // console.log(res,typeof res);
        // console.log('连接后的原数组',arrs);



        // var arrs = ['阿珂','双儿','建宁公主','苏荃','沐剑屏','曾柔','方怡'];
        // console.log('原始数组',arrs);
        // var res = arrs.join('%');
        // console.log(res,typeof res);
        // console.log('连接后的原数组',arrs);


        // var arrs = ['阿珂','双儿','建宁公主','苏荃','沐剑屏','曾柔','方怡'];
        // console.log('原始数组',arrs);
        // var res = arrs.join('海王');
        // console.log(res,typeof res);
        // console.log('连接后的原数组',arrs);



        // var arrs = ['阿珂','双儿','建宁公主','苏荃','方怡','沐剑屏','曾柔','方怡'];
        // console.log('原始数组',arrs);
        // var res = arrs.indexOf('方怡');
        // console.log('结果',res);
        // console.log('查找后的原数组',arrs);


        
        var arrs = ['阿珂','双儿','建宁公主','苏荃','方怡','沐剑屏','曾柔','方怡'];
        console.log('原始数组',arrs);
        var res = arrs.indexOf('方怡',-5);
        console.log('结果',res);
        console.log('查找后的原数组',arrs);



        var arrs = ['阿珂','双儿','建宁公主','苏荃','方怡','沐剑屏','曾柔','方怡'];
        console.log('原始数组',arrs);
        var res = arrs.lastIndexOf('方怡');
        console.log('结果',res);
        console.log('查找后的原数组',arrs);


        
        var arrs = ['阿珂','双儿','建宁公主','苏荃','方怡','沐剑屏','曾柔','方怡'];
        console.log('原始数组',arrs);
        var res = arrs.lastIndexOf('方怡',-2); // -2 = arrs.length-2
        console.log('结果',res);
        console.log('查找后的原数组',arrs);


    </script>
</body>
</html>